#include "Logger.h"

bool Logger::instanceFlag = false;
Logger* Logger::instance = NULL;
string Logger::logFilename = "parser.log";

Logger::Logger(){
	logFile = new ArchivoTexto(logFilename, ArchivoTexto::ESCRITURA );
}

Logger* Logger::getInstance(){
    if(! instanceFlag){
        instance = new Logger();
        instanceFlag = true;
        return instance;
    }
    else {
        return instance;
    }
}

void Logger::setLogFilename(const string& fileName){
	logFilename = fileName;
	// Si existia un archivo abierto lo flusheo
	if ( logFile != NULL ){
		Logger::flush();
	}
	logFile = new ArchivoTexto(fileName, ArchivoTexto::ESCRITURA);
	
}

void Logger::err(const string& msg){
	logFile->escribir("ERROR : " + msg );
	logFile->terminarLinea();
}

void Logger::warn(const string& msg){
	logFile->escribir("ADVERTENCIA : " + msg );
	logFile->terminarLinea();
}

void Logger::log(ParserException& exc){
	string msg ;
	msg = exc.mensaje();

	logFile->escribir(msg);
	logFile->terminarLinea();
}

void Logger::flush(){
	logFile->flush();
}

Logger::~Logger(){
	instance = NULL; 
	instanceFlag = false;
}